/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.List;
import pojos.Articulo;
import pojos.Marca;

/**
 *
 * @author Usuario
 */
public class ArticuloDao extends AbstractDao{
    
    public void create(Articulo articulo) throws RuntimeException {
        //validaciones de entidad:
        if (articulo == null) {
            throw new RuntimeException("Es necesario llenar los campos marcados con *");
        }
        if (articulo.getDescripcionArt() == null || "".equals(articulo.getDescripcionArt())) {
            throw new RuntimeException("Es necesario escribir la descripción del artículo");
        }
        if (articulo.getIva() == null ) {
            throw new RuntimeException("Es necesario seleccionar un IVA de la lista");
        }
        if (articulo.getUnidadMedida()== null || "".equals(articulo.getUnidadMedida())) {
            throw new RuntimeException("Debe escribir la unidad de medida del producto");
        }
        if (articulo.getMarca() == null) {
            throw new RuntimeException("Es necesario seleccionar una marca de la lista");
        }
        if (articulo.getCategoria() == null) {
            throw new RuntimeException("Es necesario seleccionar una categoria de la lista");
        }

        //verificar que el rango de stock sea sea correcto
        //por ahora no se esta usando
//        if (articulo.getStockMax() >= articulo.getStockMin()) {
//            throw new RuntimeException("El Stock máximo debe ser mayor que el Stock Mínimo");
//        }

        super.saveOrUpdate(articulo);
    }
    
   public List<Articulo> findAll(){
       return (List<Articulo>)super.findAll(Articulo.class, "");
   }
   
   public List<Articulo> findByDescription(String crit){
       String busqueda = " a where a.descripcionArt like '"+ crit+"%'";
       return (List<Articulo>) super.findAll(Articulo.class, busqueda);
   }

    public List<Articulo> findByMarca(Marca crit) {
        String busqueda = " a where a.marca.descripcionMarca like '" + crit.getDescripcionMarca() + "%'";
        return (List<Articulo>) super.findAll(Articulo.class, busqueda);
    }
}
